home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d919.lha / QuickFile / QuickFile.doc < prev    next >
Text File  |  1993-10-04  |  38KB  |  977 lines

  1.  
  2.          QuickFile  v1.3.3     1 September 1993  by Alan Wigginton
  3.  
  4.  
  5.    ============== CONDITIONS =============================================
  6.  
  7.    This program is not Public Domain, however it can be freely distributed
  8.    provided all documentation and sample files are included unchanged. This
  9.    version is fully functional, except that the 'About QuickFile' requester
  10.    will often be displayed to remind you that it is unregistered.
  11.  
  12.    I accept no liability for any loss or damage resulting from the use of
  13.    this program.  Users must evaluate the program and decide its usefulness
  14.    for their own purposes.
  15.  
  16.    If you find this program useful, you should send $20 registration fee to
  17.    the address below. You will receive a registered copy of the latest
  18.    version of the program, with the annoying requester display removed.
  19.    You will also be entitled to free support, and bug fixes, as they become
  20.    available.
  21.  
  22.  
  23.    Overseas users - please do not send personal cheques. Please send an
  24.    overseas bank draft in Australian Dollars drawn on an Australian bank.
  25.    This should be readily available from your bank. Any cash currency is
  26.    also OK, however sending cash through the mail is a risk.
  27.  
  28.  
  29.    I intend to develop the program further if enough interest is shown and
  30.    would appreciate any constructive comments you may have, even if you
  31.    decide not to use it.  Enclosing a stamped self addressed envelope will
  32.    ensure a personal reply.
  33.  
  34.    Please send comments if you try it.
  35.  
  36.    Donations, comments and bug reports should be sent to:
  37.  
  38.           Alan Wigginton
  39.           23 Carissa St
  40.           Shailer Park, Queensland  4128.
  41.           AUSTRALIA
  42.  
  43.  
  44.    QuickFile was written in C and compiled with NorthC (Fish 384) from
  45.    Steve Hawtin. Thanks for your efforts Steve.
  46.  
  47.    ======================================================================
  48.  
  49.    PROGRAM DESCRIPTION
  50.  
  51.    A flexible, fast and easy to use flat file database using random access
  52.    with intelligent buffering to minimise disk access, multiple indexes
  53.    for fast access to records; form and list style screens and reports,
  54.    and fast sorting and searching. Files are quickly and easily defined,
  55.    and fields can be added, changed or deleted at any time.
  56.  
  57.    WARNING. QuickFile is a random access data base that buffers records
  58.        in memory. Failure to exit the program properly after updates
  59.        are made will result in lost updates.
  60.        ALWAYS exit the program before a reboot or power off.
  61.        DO backup your files regularly.
  62.  
  63.  
  64.    USING THE DEMONSTRATION DATABASES.
  65.  
  66.    Two demonstration databases are provided. Click on one of these icons
  67.    to start Quickfile and display the first record in the file. It is a
  68.    good idea to browse through this document to get a feel for the program
  69.    before trying to do too much.
  70.  
  71.    It is strongly suggested that you copy QuickFile to a work disk before
  72.    you try adding or updating records. The easiest way to do this is to
  73.    drag the QuickFile icon into another disk window.
  74.  
  75.    ============ CHANGES SINCE VERSION 1.2 ===================
  76.  
  77.    1.  Character, date, number and integer data types.
  78.  
  79.    2.  Up to 255 fields per record
  80.  
  81.    3.  Vertical slider gadget added for scrolling through records
  82.  
  83.    4.  Horizontal slider gadget added for scrolling through fields on one
  84.        record. (Both form and list screens).
  85.  
  86.    5.  File definition is now in a separate program
  87.  
  88.    6.  Import/Export of ASCII files
  89.  
  90.    7.  Various minor improvements to the user interface
  91.  
  92.    ======== GETTING STARTED =========
  93.  
  94.    QuickFile can be started from the WorkBench using the QuickFile icon or
  95.    a project icon for a data base. It can also be started from the CLI and
  96.    accepts a file name (optional) as a parameter.
  97.  
  98.    Icons are not generated by the program. Sorry, but if you want them you
  99.    will have to create them yourself.
  100.  
  101.    If you start QuickFile with a file (from a project icon or from the
  102.    CLI), the Form display appears showing the first record. If you do not
  103.    specify a file, a file requester is displayed. The file requester will
  104.    be one of the following (in order of preference):
  105.  
  106.       The ASL requester (WB2) will be used if asl.library is in your
  107.       LIBS: directory.
  108.  
  109.       The ARP requester will be used if arp.library is in your LIBS:
  110.       directory.
  111.  
  112.       If you have neither, QuickFile will use a requester with simple
  113.       string gadgets for you to enter Drawer and File names.
  114.  
  115.    This file requester will be used whenever a file name is required.
  116.  
  117.    The window title bar is used to display a status line and status
  118.    messages. The status line contains
  119.  
  120.       Name of the file being used.
  121.       Name of the index being used.
  122.       Current record number.
  123.       Total number of records.
  124.  
  125.    QuickFile uses indexes to sequence the records and to provide rapid
  126.    access by field value. You can have a number of indexes, all of which
  127.    are automatically maintained as you add, change and delete records. The
  128.    current index is displayed in the title line. If other indexes are
  129.    available you can choose them with Use Index on the View menu.
  130.  
  131.    Standard Amiga text gadgets are used for entering data. These provide
  132.    the following editing keys
  133.  
  134.       right Amiga-X    Erase all text in the gadget (Control-X does the
  135.                        same)
  136.  
  137.       right Amiga-Q    Restores the text that was present before you
  138.                        changed it.
  139.  
  140.       Shift-left arrow Moves the cursor to the beginning of the field.
  141.  
  142.       Shift-right arrow Moves the cursor to the end of the field.
  143.  
  144.       Shift-Del        Erases all characters from the cursor to the end of
  145.                        the gadget.
  146.                
  147.       Shift-Backspace  Erases all characters to the left of the cursor.
  148.  
  149.  
  150.    ============== PROGRAM FUNCTION ==================
  151.  
  152.    This section describes the two main display formats, followed by an
  153.    explanation of each menu item.
  154.  
  155.  
  156.    FORM DISPLAY
  157.  
  158.    This is the initial display you are shown after you open a file. It has
  159.    fields displayed down the screen, a row of buttons across the bottom and
  160.    a vertical and horizontal slider gadget.
  161.  
  162.    The button functions are:
  163.  
  164.    GoTo
  165.       This brings up a requester for you to enter the key of the
  166.       required record. Pressing the OK button or RETURN on the last key
  167.       field will perform the GoTo.
  168.  
  169.       If the key you enter does not exist, the next higher record is
  170.       displayed. You can enter "SM" to position on the record for SMITH
  171.       followed by SMITHERS, SMITHFIELD etc.
  172.  
  173.    Insert
  174.       Displays a blank screen and lets you enter values. Press RETURN on
  175.       each field to move you to the next field.
  176.  
  177.       Press the Copy button to copy the contents of the last record
  178.       displayed or added. This is useful if you are entering records with
  179.       similar values in some fields of each record.
  180.  
  181.       Press Insert to store the details and clear the fields ready for
  182.       the next record.
  183.  
  184.       Press Cancel to return to Browse mode.  NB When Cancel is pressed
  185.       any values displayed on the screen will be lost. Press Insert if
  186.       you want them stored.
  187.  
  188.    Modify
  189.       Displays the current record for you to make changes. Press Update
  190.       to store the changes. Press Cancel to keep the current values. Press
  191.       return to move to the next field.
  192.  
  193.    Delete
  194.       Brings a requester asking you to confirm the deletion. Press OK to
  195.       delete the record. Press Cancel if you really want to keep it.
  196.  
  197.    List
  198.       Changes to the list format (see below)
  199.  
  200.    Vertical Slider
  201.       This controls movement through the file and works in the usual way.
  202.  
  203.    Horizontal Slider
  204.       If there are more fields than will fit in the current window, this
  205.       can be used to display the next group of fields.
  206.  
  207.    LIST DISPLAY
  208.  
  209.    This is obtained by pressing the List button or selecting List from the
  210.    VIEW menu. It displays as many records as will fit in the window with a
  211.    single line per record. If the records are wider than the window, the
  212.    horizontal slider can be used to scroll left or right.
  213.  
  214.    The List screen has sliders for horizontal and vertical scrolling, and
  215.    several buttons. These are:
  216.  
  217.    GoTo
  218.       As for the Form display (above).
  219.  
  220.    Insert
  221.       As for the Form display (above).
  222.  
  223.    Modify
  224.       Before using this, select a record using a single press of the left
  225.       mouse button. If no record is selected, the first record on the screen
  226.       will be displayed for modification.
  227.  
  228.    Delete
  229.       Before using this, select a record as for modify. If you don't select
  230.       a record, you will be given an error message.
  231.  
  232.    Layout
  233.       This brings up the Select Fields requester to change the fields
  234.       displayed. You can select certain fields only, change the order, or
  235.       reduce the displayed length of a field (see below).
  236.  
  237.    You can also change to the form display of a record by double clicking
  238.    on the record with the left mouse button.
  239.  
  240.  
  241.    SELECT FIELDS REQUESTER
  242.  
  243.    This is used wherever you are required to select a fields for some
  244.    purpose. A list of available fields is displayed on the left and a list
  245.    of the fields selected is displayed on the right.
  246.  
  247.    You select fields from the Available fields box on the left by clicking
  248.    on them. As you select each field, it appears in the list of selected
  249.    fields.
  250.  
  251.    The length of the last selected field is displayed below the list. You
  252.    can alter this to reduce (or increase) the length to be used. NB You MUST
  253.    press ENTER after changing the length. You can also click a selected
  254.    field to display its length for changing. This only affects the length
  255.    being used for the current purpose; the length of the data base field is
  256.    not changed.
  257.  
  258.    The Clear button clears all current selections for you to start again.
  259.    You cannot add or delete individual fields from the selection.
  260.  
  261.  
  262.    ============= MENU FUNCTIONS =================
  263.  
  264.    PROJECT MENU
  265.  
  266.    Open
  267.       Brings up a file requester for you to select the file to process.
  268.       Always select the definition name - the one with no extension. If you
  269.       select a file that is not a QuickFile definition, you will be given
  270.       a message saying that the definition cannot be found.
  271.  
  272.    Save
  273.       Writes all updated blocks and indexes to disk. You should use this
  274.       periodically during a long update session.
  275.  
  276.    Close
  277.       Writes all updated records and indexes to disk and closes the file
  278.       but leaves the program running.
  279.  
  280.    BackUp
  281.       Creates a copy of the definition and data files (not the indexes).
  282.       A requester is displayed for you to enter the backup file name. The
  283.       default is filename.bkp.
  284.  
  285.       Backup uses the current index. You can write selected records to
  286.       another file by choosing Selected from the View menu before Backup.
  287.       If you choose Backup while viewing selected records, you will be
  288.       asked for confirmation to avoid accidental loss of data.
  289.  
  290.       The file is reorganised during backup, so a backup followed by a
  291.       restore will reorganise your file. Free space is adjusted to the
  292.       value specified in the file definition and records are physically
  293.       stored in the sequence of the active key. Select your most used key
  294.       sequence before doing the backup to ensure fastest access in the
  295.       reorganised file.
  296.  
  297.       The backup file is a QuickFile data base so you can open it like any
  298.       other database file.
  299.  
  300.    Restore
  301.       Restores from a copy made using the backup menu item. You will be
  302.       asked for two file names (using the requester)
  303.  
  304.       1.  The file to be restored from (source)
  305.       2.  The file to be restored to (target)
  306.  
  307.  
  308.       After the file is restored, the indexes are automatically rebuilt.
  309.  
  310.    Exit
  311.       Writes all updated records and indexes to disk, closes the file and
  312.       exits the program. Selecting the Close gadget on the screen has the
  313.       same effect. A requester is displayed to confirm your choice.
  314.       Note that you do not have the option of exiting the program without
  315.       saving the file. This is because records may be written back to the
  316.       file any time while you are running the program.
  317.  
  318.  
  319.    VIEW MENU
  320.  
  321.    Form
  322.       Changes to or refreshes the Form display.
  323.  
  324.    List
  325.       Changes to the List display.
  326.  
  327.    Use Index
  328.       This has a sub-menu showing a list of indexes for you to choose from.
  329.       The first sub-menu item selects the "Sorted" sequence but will be
  330.       ghosted until you perform a sort.
  331.  
  332.       When you change indexes, the same record is displayed but the file
  333.       will be in a new sequence. e.g. You can use this to find a book by a
  334.       particular author and then select the subject index to list all other
  335.       books on the same subject.
  336.  
  337.    Selected
  338.       Allows you to display previously selected records. This will be
  339.       ghosted unless your have used Select from the Tools menu. See Tools
  340.       menu for more details.
  341.  
  342.  
  343.    TOOLS MENU
  344.  
  345.    Sort
  346.       Brings up a requester for you to select fields to sort on.  Sort
  347.       effectively creates a temporary index that is updated automatically
  348.       as you add, delete and change records. The Sort index is discarded
  349.       when the file is closed but until then, you will not need to re-sort
  350.       to place changed or added records in the right sequence.
  351.  
  352.       If you request a sort while displaying selected records, only the
  353.       records in the selection are sorted.
  354.  
  355.       Date, integer and number fields are sorted correctly according to
  356.       their value, rather than their ASCII sequence.
  357.  
  358.       Sort Requester
  359.       This is identical to the List requester. You can sort over more than
  360.       one field at a time, although you can currently only sort into
  361.       ascending sequence.
  362.  
  363.       Press OK to start the sort, or Cancel if you have changed your
  364.       mind. Sorting is quite fast so you shouldn't have to wait long. A
  365.       sort (over one field) of the 1300 records on my largest file takes
  366.       22 seconds on my standard A500.
  367.  
  368.       The sort technique used requires that all sort keys be resident in
  369.       memory, so record buffers are freed to increase the memory available
  370.       to the sort. You will notice that disk activity increases after a sort
  371.       as buffers are reloaded. If you are short of memory, it may help to
  372.       sort using less than the full length of long fields.
  373.  
  374.  
  375.    Select
  376.       Searches through the data base looking for records with fields
  377.       matching requested values.  A blank screen is displayed for you to
  378.       enter your selection criteria. Only fields in which you enter a
  379.       value are used in the search, and a field matches if it contains the
  380.       search string anywhere within it. eg "bit" would find "The Hobbit"
  381.       and "Bitter Sweet". Numeric fields are treated the same way, but with
  382.       date fields you can only search on a complete date.
  383.  
  384.       The search ignores case so that "DOG" matches "Dog" and even "doG".
  385.  
  386.       Press Search to start the search or Cancel to return to the previous
  387.       screen.
  388.  
  389.       The selected data will be in the same sequence as the current Index,
  390.       which may be the result of a previous selection. If the current index
  391.       is a previous selection, only the selected records are searched.
  392.  
  393.       When the search has completed, the title bar will show the number of
  394.       records selected. Don't panic, you haven't lost your file. The full
  395.       number will be displayed when you choose a full index again.
  396.  
  397.       A Selection of records is an index which is updated automatically for
  398.       deletions and changes but not additions. Records you add to the data
  399.       base will not be added to the selected records.
  400.  
  401.    Build Index
  402.       Rebuilds the current index. This can be used if the index and data
  403.       files are inconsistent for some reason (eg a system failure). This
  404.       will rebuild the index from the data file.
  405.  
  406.    Export
  407.       Allows you to write all, or selected, records to an ASCII file for
  408.       exchanging data with word processors, other data bases etc. The field
  409.       select requester is displayed for you to choose the sequence and
  410.       length of each field.
  411.  
  412.       A requester is then displayed for you to select the record and field
  413.       separators to be used for the records to be written. There are two
  414.       buttons which work like cycle gadgets in that the selection changes
  415.       with each click.
  416.  
  417.       Field Separator Button
  418.  
  419.       This determines the way fields are delimited in the output file. The
  420.       possible choices are:
  421.  
  422.            "   ",   This writes encloses fields between quotes and separates
  423.                     fields with a comma. (Basic language style).
  424.                     eg.  "Smith","Fred"
  425.  
  426.            LF       Fields are separated by a line feed character
  427.  
  428.            TAB      Fields are separated by a TAB character. This is used by
  429.                     Kindwords3 for mailmerge files.
  430.  
  431.            CRLF     This uses the IBM style end of line character; a
  432.                     carriage return followed by a line feed.
  433.  
  434.            NONE     No field separators are used and each field will occupy
  435.                     its maximum length with trailing spaces added. Each
  436.                     record will therefore be the same length.
  437.  
  438.       Record Separator Button
  439.  
  440.       This determines the way records are delimited in the output file. The
  441.       choices are:
  442.  
  443.            LF       Each record is terminated with a line feed. This is the
  444.                     one used most often.
  445.  
  446.            CRLF     This is the standard end of line in the PC DOS  world.
  447.  
  448.            NONE     No record separators are used. If this is used, the
  449.                     field separator must also be set to NONE. This format
  450.                     is used for random access files by some data bases such
  451.                     as DataEasy (not sequential) and AMIBASE PRO III.
  452.  
  453.        Do not use the same character as a field and record separator.
  454.  
  455.        If you want any other formats, please let me know and I can add them
  456.        for you.
  457.  
  458.        If you have a choice, use "  ", for field separator, and LF for
  459.        record separator. However don't use this if your data fields contain
  460.        double quote characters.
  461.  
  462.        Layout Button
  463.        This displays the field requester for viewing or changing the chosen
  464.        fields and lengths.
  465.  
  466.        OK Button
  467.        When you press this, a file requester is displayed for you to
  468.        select a file name.
  469.  
  470.        All records from the currently selected index will be written. If you
  471.        are displaying Selected records, only the selected records will be
  472.        written.
  473.  
  474.    Import
  475.        This works in a similar way to Export, except records are loaded from
  476.        an ASCII file into your data base. You are presented with the field
  477.        requester to specify the sequence and length of the fields in your
  478.        ASCII file. Both sequence and length can be different from that in
  479.        the database. Also, not all database fields need to be present in the
  480.        ASCII file. Any fields not present will be set to blank in your data
  481.        base.
  482.  
  483.        NB: It is vital that the sequence and number of fields you set in
  484.            the selected fields box of the field selector correspond to the
  485.            sequence of fields in the ASCII file you are importing.
  486.  
  487.        Make you sure you make a back up before you import a file into an
  488.        existing data base. If you get the format wrong, it is easier to
  489.        restore than to fix or delete all of the incorrect records.
  490.  
  491.        Also use plenty of buffers if you are going to import a large number
  492.        of records.
  493.  
  494.        Example:
  495.  
  496.            Data Base
  497.                 Surname       40
  498.                 First Names   40
  499.                 Street        30
  500.                 Suburb        30
  501.                 Postcode      10
  502.                 Date of Birth 11
  503.  
  504.            ASCII File record example
  505.  
  506.                "Alan","Wigginton"
  507.                "William","Smith"
  508.  
  509.            This will work correctly provided you ensure that you select
  510.            the fields in the Import field requester in the sequence that
  511.            they are in the ASCII file.
  512.            The Import field selector should show the selected fields as:-
  513.  
  514.              First Name          40
  515.              Surname             40
  516.  
  517.            This will load First Name and Surname to the correct fields in
  518.            the data base and set the remaining fields to blank.
  519.  
  520.    PRINT MENU
  521.  
  522.    Displayed Records
  523.  
  524.       Prints the records currently displayed on the screen.
  525.  
  526.    All Records in Current Index
  527.  
  528.       Prints all records in the current index (or Sort or Selection).
  529.  
  530.    The Select Fields requester is displayed for you to choose the fields to
  531.    be printed. Pressing OK then brings up the print requester which contains:
  532.  
  533.    Title
  534.       Allows you to enter a title to be printed at the top of each page of
  535.       your report. The title line will also show the current date at the
  536.       left margin and the page number at the right margin.
  537.  
  538.       The title line is only printed if you enter a Title. Note that even a
  539.       single space will print a blank title. Use CTRL-X to ensure that all
  540.       characters are deleted.
  541.  
  542.    Left and Right Margins
  543.       Allows you to temporarily override the current preferences settings.
  544.       QuickFile will not print beyond the character position specified in
  545.       the right margin.
  546.  
  547.    Lines/Page
  548.       This controls the number of lines QuickFile will use on each page.
  549.       The default is paper size minus 8 to provide a top and bottom margin.
  550.       NB QuickFile issues a Form Feed when a new page is required. This
  551.       depends on your printers page height being set correctly, and may be a
  552.       limitation with some printers.
  553.  
  554.       A value of zero will suppress the report title and page breaks.
  555.  
  556.    Print Size.
  557.       This button operates like a WB2 cycle gadget. Each time you press it
  558.       displays the next value from the following
  559.  
  560.         10 cpi  (PICA)
  561.         12 cpi  (ELITE)
  562.         17 cpi  (FINE)  The Commodore manuals call this 15-Fine, but on my
  563.                         Epson compatible printer it prints at 17 cpi.
  564.  
  565.    Lines Per Inch
  566.       This button toggles between 6 and 8 lines per inch.
  567.  
  568.    Field Names?
  569.       Toggles between YES and NO. NO suppresses field names.
  570.  
  571.    Report Type
  572.       Toggles between FORM and LIST. These are similar to the screen types.
  573.  
  574.       FORM prints the fields down the page with the field names on the
  575.       left.
  576.       LIST prints fields in columns across the page with the field names at
  577.       the top of each column.
  578.  
  579.    OK Button
  580.       This will start printing the report.
  581.  
  582.    Layout
  583.       This brings up the Select Fields requester for changing the fields to
  584.       be printed.
  585.  
  586.    Cancel
  587.       Returns to the main display and cancels any changes entered into the
  588.       requester.
  589.  
  590.    To print mailing labels:
  591.  
  592.     . Use Lines/Page of zero to suppress the title and page breaks.
  593.     . Use NO for the Field Names? button.
  594.     . Select one field for each line on the label. (For unused lines you
  595.       will need to define a dummy field that is always blank. It will use
  596.       no space in the file and you can print the same field on any number
  597.       of lines).
  598.  
  599.     You can place only one field on each line and all fields will start in
  600.     the same position. It cannot print multiple labels across a page.
  601.  
  602.    To print lines of 136 characters (useful for LIST reports)
  603.  
  604.      . Press the Print Size button until 17cpi is displayed.
  605.      . Set left margin to 1 and right margin to 136 (80 column printer).
  606.  
  607.    OPTIONS MENU
  608.  
  609.    About
  610.  
  611.       Tells you about QuickFile. If it is a registered copy, the name
  612.       of the registered user is displayed.
  613.  
  614.    Buffers
  615.  
  616.       Displays the number of buffers currently in use. This will start at
  617.       1 and gradually increase as you access records until the entire file
  618.       is in memory or the maximum allowed is reached. The maximum buffers
  619.       can be changed by altering the definition (see below)
  620.  
  621.  
  622.    ============== FILE DEFINITION ==================
  623.  
  624.    The file definition is now in a separate program. While this may not be
  625.    as convenient, it keeps the main program smaller. This is mainly for my
  626.    benefit when compiling and linking as I only have a floppy based, 1 meg
  627.    A500.
  628.  
  629.    To define a new file or change an existing, click on the QFDefine icon.
  630.  
  631.    CHANGING A FILE DEFINITION
  632.  
  633.    You can change just about everything in a file definition, except the
  634.    block size, even after you have loaded data to the file. You can change
  635.    field names, types and lengths. You can add or delete fields, and add or
  636.    delete indexes. Caution should be used when changing field types that
  637.    contain data.
  638.  
  639.    WARNING: Deleting a field makes its data inaccessible, even if you
  640.        re-add the same field. If you accidentally delete a field, reload
  641.        the definition without saving your changes and start your changes
  642.        again.
  643.  
  644.    DEFINING A NEW FILE (or Changing an existing file)
  645.  
  646.    The following describes all of the fields in the sequence you will
  647.    normally enter them
  648.  
  649.    FILE DETAILS
  650.  
  651.    Block Size
  652.       QuickFile does not read and write single records at a time, but
  653.       builds them into blocks. This reduces the number of disk reads and
  654.       writes required. Around 2000 seems to give good results. The only way
  655.       to change block size is to export the whole file, define a new data
  656.       base and use import to recreate your file. Block size must be larger
  657.       than the maximum record size plus free space, plus some space for
  658.       control fields (2 bytes per field plus 2 bytes for the record length).
  659.  
  660.    Free Space
  661.       Specifies the amount of free space to be left in each block to allow
  662.       for records to expand. As QuickFile only stores the actual data
  663.       entered (not trailing blanks), additional space is required if a
  664.       change makes a field longer. 100 seems to work OK. Records are moved
  665.       to another block if necessary, so this is not critical.
  666.  
  667.    Buffers
  668.       This is the maximum number of buffers QuickFile will use for holding
  669.       blocks of records in memory. Unless you have very large files or are
  670.       short of memory, use a large figure such as 100.  QuickFile will never
  671.       use more buffers than are required for the whole file.
  672.  
  673.       The more of the file in memory, the faster QuickFile works. The memory
  674.       used is approximately (number of buffers * buffer size).
  675.  
  676.  
  677.  
  678.    FIELDS
  679.  
  680.    Use the Add button to add a field. A requester will appear for the
  681.    field details. If a field is highlighted when you press add, the new
  682.    field will be added above the highlighted field, otherwise it is
  683.    added to the end of the list.
  684.  
  685.    To change or delete fields, click on the field, then press the
  686.    appropriate button. A requester will appear for you to make or changes
  687.    or to confirm the deletion.
  688.  
  689.    The Field Requester contains the following fields
  690.  
  691.       Name
  692.       Enter a name of up to 12 characters for the field.
  693.  
  694.       Type
  695.       Choose from character, date, integer or numeric (real)
  696.  
  697.          Character string data. Whatever you like. Avoid double quotes
  698.                  if you are going to use export with quotes as delimiters.
  699.  
  700.          Date fields. Entered as Day/Month/Year. The separator can be
  701.                  /-. or a space. Dates are always displayed in the format
  702.                      14-Apr-1993.
  703.  
  704.                  The following are valid dates
  705.                       03/08/93  3-8-93  3.aug.93  03 aug 1993
  706.  
  707.                  Year can be entered as two or four digits. If two digits
  708.                    are used, a number greater than 50 is assumed to be this
  709.                    century, 50 or less, the next century.
  710.  
  711.                eg. 3/6/94   is interpreted as 03-Jun-1994
  712.                    1-aug-10 is interpreted as 01-Aug-2010
  713.  
  714.                A date field must be given a length of at least 11.
  715.  
  716.          Integer (whole number, no decimals) These are displayed right
  717.                justified
  718.  
  719.          Real Number. Decimals allowed. Numbers are displayed right
  720.                justified, but are not reformatted after you enter then. If
  721.                you want decimal points to line up, you will have to enter
  722.                the same number of decimal places in each record.
  723.  
  724.       Length
  725.       Enter the required length. 60 characters is a practical maximum
  726.       length as no left and right scrolling is provided and more
  727.       characters cannot be displayed. (You can scroll within fields on the
  728.       update screen, but this is pretty tedious). The maximum is 250.
  729.       The minimum length of a date field is 11 characters.
  730.  
  731.       Space is used only for the number of characters entered in each record,
  732.       not for the maximum field length. In fact, if a field is empty it
  733.       takes up no space at all.
  734.  
  735.       All of these values can be changed at any time without any unexpected
  736.       effects. If you reduce the length of a field, excess data is only
  737.       discarded from records as they are updated. Increasing the field
  738.       length will restore the old data except for records you have changed.
  739.       Note that backup/restore will reformat ALL records.
  740.  
  741.  
  742.    INDEXES
  743.  
  744.    You must define at least one index to be used for sequencing your
  745.    records, and quickly locating a record. If you are not sure pick any
  746.    field that will give a useful sequence, such as surname, title etc.
  747.    Each index can use a number of fields to give precise control of
  748.    sequence.
  749.  
  750.    Fields cannot be added to or deleted from indexes, so changes are made
  751.    by deleting and redefining the index. This should not be much of a
  752.    problem as they are quick and easy to define. If you do change an index
  753.    on an existing file, it will be rebuilt the next time you open the file.
  754.  
  755.    Insert Button
  756.    Pressing this brings up field  requester. You must give the index a name
  757.    (up to 8 characters) and select the fields to be used. You can use part
  758.    of a long field for an index by changing the default length. This will
  759.    reduce sort storage requirements when rebuilding indexes.
  760.  
  761.    Show Button
  762.    Click on an index to highlight it before pressing this button.
  763.    Displays a requester showing the fields used for the selected index.
  764.  
  765.    Delete Button
  766.    Click on an index to highlight it before pressing this button. Displays
  767.    a requester showing the fields in the index. Press OK to delete the
  768.    index, press cancel if you have changed your mind.
  769.  
  770.    You can have any number of indexes but you should limit yourself to
  771.    those you are going to use regularly. I find it difficult to see how more
  772.    than 2 or 3 would be useful, particularly as sorting is quite fast.
  773.  
  774.    Indexes are maintained automatically as you add, modify and delete
  775.    records on your file so they reduce the need for sorting and resorting.
  776.  
  777.  
  778.    ================  ADDITIONAL INFORMATION ==================
  779.  
  780.    FILES
  781.  
  782.    QuickFile uses three types of file distinguished by extension. These
  783.    are not text files and cannot be edited with most text editors. Using a
  784.    hex editor will probably corrupt the file. YOU HAVE BEEN WARNED.
  785.  
  786.    The DEFINITION FILE has no extension. This is the name you enter when
  787.    specifying a file name for QuickFile.
  788.  
  789.    The DATA FILE has an extension of .Data.
  790.  
  791.    INDEX FILES have an extension of .nameX where 'name' is the name of the
  792.    index as specified in the file definition.
  793.  
  794.  
  795.    POSSIBLE PROBLEMS
  796.  
  797.    If you suspect an index has been corrupted in some way, you can
  798.    delete the index file (called filename.indnameX). When you next open the
  799.    file, the index will be rebuilt.
  800.  
  801.    An index may be corrupted if you do not close a file properly because of
  802.    a system failure or rebooting. The data file may be updated, but the
  803.    index would not have. If in doubt, delete the indexes.
  804.  
  805.    You can also rebuild an index by selecting the Rebuild Index item from
  806.    the tools menu.
  807.  
  808.    ========================= HISTORY ================================
  809.  
  810.    1.3.3   1 September 1993
  811.  
  812.    1.  Fixed problem in list display that was trashing memory if a
  813.        database had a small record size.
  814.    2.  Definition was allowing block size to be changed if you increased
  815.        the record size past the maximum for the block.
  816.    3.  Positioning now maintained correctly in list display when you
  817.        change indexes.
  818.  
  819.    1.3.2  28 August 1993 (not released)
  820.  
  821.    1.  Added List button to form screen
  822.    2.  Added Insert, Modify and Delete buttons to list screen.
  823.    3.  Fixed problem where searching a previous selection would search
  824.        the entire data base
  825.    4.  Removed spurious message being displayed when a missing index
  826.        is created.
  827.  
  828.    1.3.1  4 August 1993 (Bug Fixes)
  829.  
  830.    1.  Index search used length of first index for all indexes -> ka-boom.
  831.    2.  Deleted field names were blanked but kept in the definition.
  832.  
  833.  
  834.    1.3.0  23 July 1993 (not released)
  835.  
  836.    1.  Character, date, number and integer data types.
  837.  
  838.    2.  Up to 255 fields per record
  839.  
  840.    3.  Vertical slider gadget added for scrolling through records
  841.  
  842.    4.  Horizontal slider gadget added for scrolling through fields on one
  843.        record. (Both form and list screens).
  844.  
  845.    5.  File definition is now in a separate program
  846.  
  847.    6.  Import/Export of ASCII files
  848.  
  849.    7.  Removed problem that caused a crash when adding more than 12 fields.
  850.  
  851.  
  852.    1.2.2 (not released)
  853.  
  854.      1   Bug fix. Sort index not updated for a delete if records
  855.          had been selected but selection did not contain the record.
  856.          Error message incorrectly being displayed for the selection.
  857.  
  858.  
  859.    1.2.1  16 Feb 93
  860.  
  861.      1   Included list style reports
  862.  
  863.      2   Included ASL and ARP file requesters
  864.  
  865.      3   New print requester to improve control of reports
  866.  
  867.      4   The index field size is now updated correctly when you change the
  868.          length of an existing field used as an index.
  869.  
  870.      5   Index record memory dynamically reallocated if necessary.
  871.  
  872.      6   If you add an index to an existing file, the index will be
  873.          rebuilt automatically when you open the file again.
  874.  
  875.      7   You are now warned if you attempt a backup while displaying
  876.          selected records. Only the selected records will be written to the
  877.          backup file.
  878.  
  879.      8   You can now open a file where the drawer contains only a drive or
  880.          disk name with no directory. eg df0:
  881.  
  882.    1.0.0  24 Nov 92
  883.  
  884.        Initial Release
  885.  
  886.  
  887.    =======================  BUGS  ==========================
  888.  
  889.    Very occasionally, resizing the window in list mode takes the whole
  890.    system out. I have not been able to force this to happen, which makes
  891.    it hard to find. I think I have fixed the problem that was causing
  892.    this, but as I could never force, I am not sure.
  893.  
  894.    You can give several fields the same name. If you use the second one in
  895.    an index, it will think you mean the first one, but shouldn't cause any
  896.    major problems.
  897.  
  898.    When the vertical slider is enabled after insert or update etc, intuition
  899.    does not remove the shading. RefreshGList() does not work and I haven't
  900.    got around to redrawing the border yet. It still functions though.
  901.  
  902.    Error handling is still less than adequate. Out of  Memory errors
  903.    will cause the program to fail with an error message rather than give
  904.    a warning for you to free some memory.
  905.  
  906.    Disk errors will also cause an immediate termination.
  907.  
  908.    The program has been reasonably tested, but only on my A500. Some bugs
  909.    refuse to show up until you hit exactly the right combination of
  910.    conditions, so please let me know of any problems you find.
  911.  
  912.  
  913.    =======================  WEAKNESSES ===========================
  914.  
  915.    QuickFile is lacking in several areas. These may be enhanced in future
  916.  
  917.    Searching
  918.  
  919.       The searching facilities are very basic. It should provide equal, less
  920.       than, greater than, between etc.
  921.  
  922.    Form Design
  923.       There is no provision to design your own forms (displays or reports).
  924.       This also may be added in future.
  925.  
  926.    Calculations
  927.       There is no facility for totalling, or calculating a column based on
  928.       other columns.
  929.  
  930.    Label printing
  931.       You can print single strip labels but it is a bit of a kludge.
  932.  
  933.    Saving views and reports
  934.       You cannot save your preferred window position and size or the format
  935.       or settings for a report you have printed.
  936.  
  937.    Field Length
  938.       While up to 250 characters are allowed per field, this is not very
  939.       useful as each field is limited to one line. 
  940.  
  941.  
  942.    ==========================  LIMITS  ===============================
  943.  
  944.    Number of Records per File
  945.  
  946.       The theoretical limit is something like 16 million depending on block
  947.       and record sizes. In practice this will be limited by the indexing
  948.       technique which will run out of either memory or processor speed.
  949.       Each data record has a 4 byte entry in each index, and each index must
  950.       fit in a single chunk of memory. The actual memory requirement per
  951.       index is 4(n + 200), where n is the number of data records in the file.
  952.  
  953.       My largest file is about 2800 records (115 chars per record) and it
  954.       is fine.
  955.  
  956.       While files can be larger than available memory, it will run much
  957.       faster if you can set the number of buffers large enough to contain
  958.       the whole file.
  959.  
  960.       I would be interested to hear from anyone using it with larger files.
  961.  
  962.    Number of fields per record
  963.  
  964.       255. But I got bored at about 60, so you take your chances if you want
  965.       to try more.
  966.  
  967.    Maximum characters per field
  968.  
  969.       250
  970.  
  971.    Number of indexes
  972.  
  973.       More than you should ever use. It will probably crash if you exceed
  974.       the maximum allowed number of sub menu items.
  975.  
  976.  
  977.